import pandas as pd

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                     'A': ['A0', 'A1', 'A2', 'A3']})

right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                      'B': ['B0', 'B1', 'B2', 'B3']})
  
merged_df = pd.merge(left, right, how='inner', on='key')

df_list = [pd.DataFrame([[1], [2]], columns=['A']),
           pd.DataFrame([[3], [4]], columns=['B'])]

concatenated_df = pd.concat(df_list, axis=1)

arrays = [[1]*4 + [2]*4,
          list('ABCD') * 2]

multi_idx_data = pd.DataFrame(
    np.random.randint(30, 100, size=(8, 2)),
    columns=['math', 'chinese'],
    index=pd.MultiIndex.from_arrays(arrays, names=('level_1', 'level_2'))
)

stats_series = multi_idx_data[['math']].agg(['mean', 'max', 'median'])

custom_series = pd.Series([1, 2, 3],
                          index=list('abc'),
                          name="Custom Series")

                          